home *** CD-ROM | disk | FTP | other *** search
/ Giga Games 1 / Giga Games.iso / net / usenet / volume7 / nethack3 / patch5c < prev    next >
Encoding:
Text File  |  1989-11-08  |  57.4 KB  |  2,205 lines

  1. Subject:  v08i050:  NetHack3 -  display oriented dungeons & dragons (Ver. 3.0), Patch5c
  2. Newsgroups: comp.sources.games
  3. Approved: billr@saab.CNA.TEK.COM
  4.  
  5. Submitted-by: Izchak Miller <izchak@linc.cis.upenn.edu>
  6. Posting-number: Volume 8, Issue 50
  7. Archive-name: NetHack3/Patch5c
  8. Patch-To: NetHack3: Volume 7, Issue 56-93
  9.  
  10. #! /bin/sh
  11. # This is a shell archive.  Remove anything before this line, then unpack
  12. # it by saving it into a file and typing "sh file".  To overwrite existing
  13. # files, type "sh file -c".  You can also feed this as standard input via
  14. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  15. # will see the following message at the end:
  16. #        "End of archive 3 (of 6)."
  17. # Contents:  patches05c
  18. # Wrapped by billr@saab on Tue Oct 17 13:16:26 1989
  19. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  20. if test -f 'patches05c' -a "${1}" != "-c" ; then 
  21.   echo shar: Will not clobber existing file \"'patches05c'\"
  22. else
  23. echo shar: Extracting \"'patches05c'\" \(54981 characters\)
  24. sed "s/^X//" >'patches05c' <<'END_OF_FILE'
  25. X*** /dev/null    Sun Oct 15 19:25:34 1989
  26. X--- include/color.h    Tue Oct  3 20:08:13 1989
  27. X***************
  28. X*** 0 ****
  29. X--- 1,38 ----
  30. X+ /*    SCCS Id: @(#)color.h    3.0    89/09/30
  31. X+ /* Copyright (c) Steve Linhart, Eric Raymond, 1989. */
  32. X+ /* NetHack may be freely redistributed.  See license for details. */
  33. X+ 
  34. X+ #ifndef COLOR_H
  35. X+ #define COLOR_H
  36. X+ 
  37. X+ #define BLACK        0
  38. X+ #define RED        1
  39. X+ #define GREEN        2
  40. X+ #define BROWN        3    /* on IBM, lo-intensity yellow is brown */
  41. X+ #define BLUE        4
  42. X+ #define MAGENTA     5
  43. X+ #define CYAN        6
  44. X+ #define WHITE        7
  45. X+ #define GRAY        7    /* lo-intensity white */
  46. X+ #define BRIGHT        8
  47. X+ #define ORANGE_COLORED    9
  48. X+ #define YELLOW        11
  49. X+ #define MAXCOLORS    16    /* 8 basic + 8 bright */
  50. X+ 
  51. X+ /* these can be configured */
  52. X+ #define HI_MON        RED + BRIGHT    /* default flesh - red slaps! */
  53. X+ #define HI_OBJ        MAGENTA
  54. X+ #define HI_METAL    CYAN
  55. X+ #define HI_COPPER    YELLOW
  56. X+ #define HI_SILVER    GRAY
  57. X+ #define HI_GOLD     YELLOW
  58. X+ #define HI_LEATHER    BROWN
  59. X+ #define HI_CLOTH    BROWN
  60. X+ #define HI_ORGANIC    GREEN
  61. X+ #define HI_WOOD     BROWN
  62. X+ #define HI_PAPER    WHITE
  63. X+ #define HI_GLASS    CYAN + BRIGHT
  64. X+ #define HI_MINERAL    GRAY
  65. X+ #define HI_ZAP        BLUE + BRIGHT    /* blue zaps! */
  66. X+ 
  67. X+ #endif /* COLOR_H */
  68. X*** include/Old/config.h    Sun Oct 15 19:25:46 1989
  69. X--- include/config.h    Sat Oct 14 19:19:36 1989
  70. X***************
  71. X*** 14,20 ****
  72. X   *        provides it (comment out the default OS option here).
  73. X   */
  74. X  
  75. X! #define    UNIX        /* delete if no fork(), exec() available */
  76. X  
  77. X  #ifdef __MSDOS__    /* Turbo C auto-defines __MSDOS__, MSC defines MSDOS */
  78. X  #define MSDOS        /* define for MS-DOS (in case compiler doesn't) */
  79. X--- 14,20 ----
  80. X   *        provides it (comment out the default OS option here).
  81. X   */
  82. X  
  83. X! #define UNIX        /* delete if no fork(), exec() available */
  84. X  
  85. X  #ifdef __MSDOS__    /* Turbo C auto-defines __MSDOS__, MSC defines MSDOS */
  86. X  #define MSDOS        /* define for MS-DOS (in case compiler doesn't) */
  87. X***************
  88. X*** 34,42 ****
  89. X--- 34,57 ----
  90. X               * library in the makefile */
  91. X  /* #define MINIMAL_TERM    /* if a terminal handles highlighting or tabs poorly,
  92. X                 try this define, used in pager.c and termcap.c */
  93. X+ /* #define MACOS 1     /* define for Apple Macintosh */
  94. X  #endif
  95. X  
  96. X+ #ifdef MACOS
  97. X+ #define KR1ED 1        /* for compilers which can't handle defined() */
  98. X+ #define LSC 1        /* for the Lighspeed 3.01p4 C compiler on the Mac */
  99. X+ /* #define AZTEC 1    /* for the Manx Aztec C 3.6c compiler */
  100. X+ /* #define THINKC4    /* for the Think C 4 compiler */
  101. X+ 
  102. X+ #define SMALLDATA 1    /* for Mac compilers with 32K global data limit */
  103. X+  
  104. X+ # ifdef KR1ED
  105. X+ #define defined(x) (x<<1) /* Lightspeed & Aztec can't handle defined() yet */
  106. X+ # endif
  107. X  
  108. X+ #endif
  109. X+ 
  110. X+ 
  111. X  
  112. X  /*
  113. X   * Section 2:    Some global parameters and filenames.
  114. X***************
  115. X*** 46,56 ****
  116. X   */
  117. X  
  118. X  #ifndef WIZARD        /* allow for compile-time or Makefile changes */
  119. X  #define WIZARD  "izchak" /* the person allowed to use the -D option */
  120. X  #endif
  121. X  
  122. X! #define    LOGFILE    "logfile" /* larger file for debugging purposes */
  123. X! #define    NEWS    "news"      /* the file containing the latest hack news */
  124. X  
  125. X  /*
  126. X   *    If COMPRESS is defined, it should contain the full path name of your
  127. X--- 61,76 ----
  128. X   */
  129. X  
  130. X  #ifndef WIZARD        /* allow for compile-time or Makefile changes */
  131. X+ # ifndef KR1ED
  132. X  #define WIZARD  "izchak" /* the person allowed to use the -D option */
  133. X+ # else
  134. X+ #define WIZARD 1
  135. X+ #define WIZARD_NAME "johnny"
  136. X+ # endif
  137. X  #endif
  138. X  
  139. X! #define LOGFILE "logfile"    /* larger file for debugging purposes */
  140. X! #define NEWS "news"        /* the file containing the latest hack news */
  141. X  
  142. X  /*
  143. X   *    If COMPRESS is defined, it should contain the full path name of your
  144. X***************
  145. X*** 63,69 ****
  146. X  /* #define ZEROCOMP    /* Use only if COMPRESS is not used -- Olaf Seibert */
  147. X  
  148. X  
  149. X! #define    CHDIR        /* delete if no chdir() available */
  150. X  
  151. X  #ifdef CHDIR
  152. X  /*
  153. X--- 83,89 ----
  154. X  /* #define ZEROCOMP    /* Use only if COMPRESS is not used -- Olaf Seibert */
  155. X  
  156. X  
  157. X! #define CHDIR        /* delete if no chdir() available */
  158. X  
  159. X  #ifdef CHDIR
  160. X  /*
  161. X***************
  162. X*** 70,76 ****
  163. X   * If you define HACKDIR, then this will be the default playground;
  164. X   * otherwise it will be the current directory.
  165. X   */
  166. X! #define HACKDIR    "/usr/games/lib/nethackdir"
  167. X  
  168. X  /*
  169. X   * Some system administrators are stupid enough to make Hack suid root
  170. X--- 90,96 ----
  171. X   * If you define HACKDIR, then this will be the default playground;
  172. X   * otherwise it will be the current directory.
  173. X   */
  174. X! #define HACKDIR "/usr/games/lib/nethackdir"
  175. X  
  176. X  /*
  177. X   * Some system administrators are stupid enough to make Hack suid root
  178. X***************
  179. X*** 84,90 ****
  180. X  /*
  181. X   * If it is desirable to limit the number of people that can play Hack
  182. X   * simultaneously, define HACKDIR, SECURE and MAX_NR_OF_PLAYERS.
  183. X!  * #define MAX_NR_OF_PLAYERS    6
  184. X   */
  185. X  #endif /* CHDIR /**/
  186. X  
  187. X--- 104,110 ----
  188. X  /*
  189. X   * If it is desirable to limit the number of people that can play Hack
  190. X   * simultaneously, define HACKDIR, SECURE and MAX_NR_OF_PLAYERS.
  191. X!  * #define MAX_NR_OF_PLAYERS 6
  192. X   */
  193. X  #endif /* CHDIR /**/
  194. X  
  195. X***************
  196. X*** 108,125 ****
  197. X  /*
  198. X   * type schar: small signed integers (8 bits suffice) (eg. TOS)
  199. X   *
  200. X!  *    typedef    char    schar;
  201. X   *
  202. X   *      will do when you have signed characters; otherwise use
  203. X   *
  204. X!  *    typedef    short int schar;
  205. X   */
  206. X! typedef    signed char    schar;
  207. X  
  208. X  /*
  209. X   * type uchar: small unsigned integers (8 bits suffice - but 7 bits do not)
  210. X   *
  211. X!  *    typedef    unsigned char    uchar;
  212. X   *
  213. X   *    will be satisfactory if you have an "unsigned char" type;
  214. X   *    otherwise use
  215. X--- 128,149 ----
  216. X  /*
  217. X   * type schar: small signed integers (8 bits suffice) (eg. TOS)
  218. X   *
  219. X!  *    typedef char    schar;
  220. X   *
  221. X   *      will do when you have signed characters; otherwise use
  222. X   *
  223. X!  *    typedef short int schar;
  224. X   */
  225. X! #ifdef AZTEC
  226. X! #define schar    char
  227. X! #else
  228. X! typedef signed char    schar;
  229. X! #endif
  230. X  
  231. X  /*
  232. X   * type uchar: small unsigned integers (8 bits suffice - but 7 bits do not)
  233. X   *
  234. X!  *    typedef unsigned char    uchar;
  235. X   *
  236. X   *    will be satisfactory if you have an "unsigned char" type;
  237. X   *    otherwise use
  238. X***************
  239. X*** 126,132 ****
  240. X   *
  241. X   *    typedef unsigned short int uchar;
  242. X   */
  243. X! typedef    unsigned char    uchar;
  244. X  
  245. X  /*
  246. X   * Various structures have the option of using bitfields to save space.
  247. X--- 150,156 ----
  248. X   *
  249. X   *    typedef unsigned short int uchar;
  250. X   */
  251. X! typedef unsigned char    uchar;
  252. X  
  253. X  /*
  254. X   * Various structures have the option of using bitfields to save space.
  255. X***************
  256. X*** 147,191 ****
  257. X   * complexity of the game but also to the size of the load module.
  258. X   */ 
  259. X  
  260. X! #define    SPELLS        /* Spell casting by M. Stephenson */
  261. X! #define POLYSELF    /* Polymorph self code by Ken Arromdee */
  262. X! #define THRONES        /* Thrones and Courts by M. Stephenson */
  263. X! #define    PROBING        /* Wand of probing code by Gil Neiger */
  264. X! #define REDO         /* support for redoing last command - DGK */
  265. X! #define    HARD        /* Enhanced wizard code by M. Stephenson */
  266. X! #define    WALKIES        /* Leash code by M. Stephenson */
  267. X! #define FOUNTAINS    /* Fountain code by SRT (+ GAN + EB) */
  268. X! #define KOPS        /* Keystone Kops by Scott R. Turner */
  269. X! #define COM_COMPL    /* Command line completion by John S. Bien */
  270. X! #define MEDUSA        /* Mirrors and the Medusa by Richard P. Hughey */
  271. X! #define NAMED_ITEMS    /* Special named items handling */
  272. X! #define ARMY        /* Soldiers, barracks by Steve Creps */
  273. X! #define    SHIRT        /* Hawaiian shirt code by Steve Linhart */
  274. X! #define THEOLOGY    /* Smarter gods - The Unknown Hacker */
  275. X! #define SINKS        /* Kitchen sinks - Janet Walz */
  276. X! #define SOUNDS        /* Add more life to the dungeon */
  277. X! #define REINCARNATION    /* Rogue-like levels */
  278. X! #define ELBERETH    /* Allow for disabling the E word - Mike 3point */
  279. X! #define WORM        /* Long worms */
  280. X! #define ORACLE        /* Include another source of information */
  281. X! #define EXPLORE_MODE    /* Allow non-scoring play with additional powers */
  282. X! #define ALTARS        /* Sacrifice sites - Jean-Christophe Collet */
  283. X! #define WALLIFIED_MAZE    /* Fancy mazes - Jean-Christophe Collet */
  284. X  #ifdef HARD
  285. X! #define SEDUCE        /* Succubi/incubi additions, by KAA, suggested by IM */
  286. X  #endif
  287. X! #define STRONGHOLD    /* Challenging special levels - Jean-Christophe Collet*/
  288. X! #define MUSIC        /* Musical instruments - Jean-Christophe Collet */
  289. X! #define GOLEMS        /* Golems, by KAA */
  290. X! #define TOLKIEN        /* More varieties of objects and monsters */
  291. X! #define KICK        /* Allow kicking things besides doors -Izchak Miller */
  292. X! #define TUTTI_FRUTTI    /* Fruits as in Rogue, but which work... -KAA */
  293. X  
  294. X  #ifdef REDO
  295. X! #define DOAGAIN    '\001'        /* The "redo" key used in tty.c and cmd.c */
  296. X  #endif
  297. X  
  298. X! #define    EXP_ON_BOTL    /* Show experience on bottom line */
  299. X  /* #define SCORE_ON_BOTL    /* added by Gary Erickson (erickson@ucivax) */
  300. X  
  301. X  
  302. X--- 171,215 ----
  303. X   * complexity of the game but also to the size of the load module.
  304. X   */ 
  305. X  
  306. X! #define SPELLS        1 /* Spell casting by M. Stephenson */
  307. X! #define POLYSELF      1 /* Polymorph self code by Ken Arromdee */
  308. X! #define THRONES       1 /* Thrones and Courts by M. Stephenson */
  309. X! #define PROBING       1 /* Wand of probing code by Gil Neiger */
  310. X! #define REDO          1 /* support for redoing last command - DGK */
  311. X! #define HARD          1 /* Enhanced wizard code by M. Stephenson */
  312. X! #define WALKIES       1 /* Leash code by M. Stephenson */
  313. X! #define FOUNTAINS     1 /* Fountain code by SRT (+ GAN + EB) */
  314. X! #define KOPS          1 /* Keystone Kops by Scott R. Turner */
  315. X! #define COM_COMPL     1 /* Command line completion by John S. Bien */
  316. X! #define MEDUSA        1 /* Mirrors and the Medusa by Richard P. Hughey */
  317. X! #define NAMED_ITEMS   1 /* Special named items handling */
  318. X! #define ARMY          1 /* Soldiers, barracks by Steve Creps */
  319. X! #define SHIRT         1 /* Hawaiian shirt code by Steve Linhart */
  320. X! #define THEOLOGY      1 /* Smarter gods - The Unknown Hacker */
  321. X! #define SINKS         1 /* Kitchen sinks - Janet Walz */
  322. X! #define SOUNDS        1 /* Add more life to the dungeon */
  323. X! #define REINCARNATION 1 /* Rogue-like levels */
  324. X! #define ELBERETH      1 /* Allow for disabling the E word - Mike 3point */
  325. X! #define WORM          1 /* Long worms */
  326. X! #define ORACLE        1 /* Include another source of information */
  327. X! #define EXPLORE_MODE  1 /* Allow non-scoring play with additional powers */
  328. X! #define ALTARS        1 /* Sacrifice sites - Jean-Christophe Collet */
  329. X! #define WALLIFIED_MAZE 1 /* Fancy mazes - Jean-Christophe Collet */
  330. X  #ifdef HARD
  331. X! #define SEDUCE        1 /* Succubi/incubi additions, by KAA, suggested by IM */
  332. X  #endif
  333. X! #define STRONGHOLD    1 /* Challenging special levels - Jean-Christophe Collet*/
  334. X! #define MUSIC         1 /* Musical instruments - Jean-Christophe Collet */
  335. X! #define GOLEMS        1 /* Golems, by KAA */
  336. X! #define TOLKIEN       1 /* More varieties of objects and monsters */
  337. X! #define KICK          1 /* Allow kicking things besides doors -Izchak Miller */
  338. X! #define TUTTI_FRUTTI  1 /* Fruits as in Rogue, but which work... -KAA */
  339. X  
  340. X  #ifdef REDO
  341. X! #define DOAGAIN '\001'        /* The "redo" key used in tty.c and cmd.c */
  342. X  #endif
  343. X  
  344. X! #define EXP_ON_BOTL    /* Show experience on bottom line */
  345. X  /* #define SCORE_ON_BOTL    /* added by Gary Erickson (erickson@ucivax) */
  346. X  
  347. X  
  348. X*** include/Old/decl.h    Sun Oct 15 19:26:17 1989
  349. X--- include/decl.h    Sun Oct 15 17:23:37 1989
  350. X***************
  351. X*** 121,157 ****
  352. X  #endif
  353. X  
  354. X  #ifdef TEXTCOLOR
  355. X! 
  356. X! #define BLACK        0
  357. X! #define RED        1
  358. X! #define GREEN        2
  359. X! #define BROWN        3    /* on IBM, lo-intensity yellow is brown */
  360. X! #define BLUE        4
  361. X! #define MAGENTA     5
  362. X! #define CYAN        6
  363. X! #define WHITE        7
  364. X! #define GRAY        7    /* lo-intensity white */
  365. X! #define BRIGHT        8
  366. X! #define ORANGE_COLORED    9
  367. X! #define YELLOW        11
  368. X! #define MAXCOLORS    16    /* 8 basic + 8 bright */
  369. X! 
  370. X! /* these can be configured */
  371. X! #  define HI_MON    RED + BRIGHT        /* red slaps! */
  372. X! #  define HI_OBJ    MAGENTA
  373. X! #  define HI_METAL    CYAN
  374. X! #  define HI_COPPER    YELLOW
  375. X! #  define HI_SILVER    GRAY
  376. X! #  define HI_GOLD    YELLOW
  377. X! #  define HI_LEATHER    BROWN
  378. X! #  define HI_CLOTH    BROWN
  379. X! #  define HI_ORGANIC    GREEN
  380. X! #  define HI_WOOD    BROWN
  381. X! #  define HI_PAPER    BROWN
  382. X! #  define HI_GLASS    CYAN + BRIGHT
  383. X! #  define HI_MINERAL    GRAY
  384. X! #  define HI_ZAP    BLUE + BRIGHT        /* blue zaps! */
  385. X! 
  386. X  E char *hilites[MAXCOLORS];
  387. X  #endif
  388. X  
  389. X--- 121,129 ----
  390. X  #endif
  391. X  
  392. X  #ifdef TEXTCOLOR
  393. X! #ifndef COLOR_H
  394. X! #include "color.h"
  395. X! #endif
  396. X  E char *hilites[MAXCOLORS];
  397. X  #endif
  398. X  
  399. X*** include/Old/extern.h    Sun Oct 15 19:27:24 1989
  400. X--- include/extern.h    Sun Oct 15 12:47:49 1989
  401. X***************
  402. X*** 27,32 ****
  403. X--- 27,33 ----
  404. X  #endif
  405. X  
  406. X  #if !defined(MAKEDEFS_C) && !defined(LEV_LEX_C)
  407. X+ 
  408. X  /* ### apply.c ### */
  409. X  
  410. X  E int doapply();
  411. X***************
  412. X*** 137,143 ****
  413. X  E int doddrop();
  414. X  E int dodown();
  415. X  E int doup();
  416. X! E void goto_level P((int,BOOLEAN_P));
  417. X  E int donull();
  418. X  E int dowipe();
  419. X  E struct obj *splitobj P((struct obj *,int));
  420. X--- 138,144 ----
  421. X  E int doddrop();
  422. X  E int dodown();
  423. X  E int doup();
  424. X! E void goto_level P((int,BOOLEAN_P,BOOLEAN_P));
  425. X  E int donull();
  426. X  E int dowipe();
  427. X  E struct obj *splitobj P((struct obj *,int));
  428. X***************
  429. X*** 156,161 ****
  430. X--- 157,163 ----
  431. X  E char *mon_nam P((struct monst *));
  432. X  E char *Monnam P((struct monst *));
  433. X  E char *a_monnam P((struct monst *,char *));
  434. X+ E char *a2_monnam P((struct monst *,char *));
  435. X  E char *Amonnam P((struct monst *,char *));
  436. X  E char *Xmonnam P((struct monst *));
  437. X  E char *defmonnam P((struct monst *));
  438. X***************
  439. X*** 235,247 ****
  440. X  
  441. X  E void init_uhunger();
  442. X  E int Hear_again();
  443. X  E int doeat();
  444. X  E void gethungry();
  445. X  E void morehungry P((int));
  446. X  E void lesshungry P((int));
  447. X  E void newuhs P((BOOLEAN_P));
  448. X- E void vomit();
  449. X  E struct obj *floorfood P((char *,BOOLEAN_P));
  450. X  
  451. X  /* ### end.c ### */
  452. X  
  453. X--- 237,250 ----
  454. X  
  455. X  E void init_uhunger();
  456. X  E int Hear_again();
  457. X+ E void reset_eat();
  458. X  E int doeat();
  459. X  E void gethungry();
  460. X  E void morehungry P((int));
  461. X  E void lesshungry P((int));
  462. X  E void newuhs P((BOOLEAN_P));
  463. X  E struct obj *floorfood P((char *,BOOLEAN_P));
  464. X+ E void vomit();
  465. X  
  466. X  /* ### end.c ### */
  467. X  
  468. X***************
  469. X*** 379,387 ****
  470. X  #ifdef UNIX
  471. X  E void getioctls();
  472. X  E void setioctls();
  473. X! #ifdef SUSPEND
  474. X  E int dosuspend();
  475. X! #endif /* SUSPEND */
  476. X  #endif /* UNIX */
  477. X  
  478. X  /* ### lock.c ### */
  479. X--- 382,390 ----
  480. X  #ifdef UNIX
  481. X  E void getioctls();
  482. X  E void setioctls();
  483. X! # ifdef SUSPEND
  484. X  E int dosuspend();
  485. X! # endif /* SUSPEND */
  486. X  #endif /* UNIX */
  487. X  
  488. X  /* ### lock.c ### */
  489. X***************
  490. X*** 394,405 ****
  491. X  E int doopen();
  492. X  E int doclose();
  493. X  
  494. X  /* ### mail.c ### */
  495. X  
  496. X  #ifdef MAIL
  497. X! #ifdef UNIX
  498. X  E void getmailstatus();
  499. X! #endif
  500. X  E void ckmailstatus();
  501. X  E void readmail();
  502. X  #endif /* MAIL */
  503. X--- 397,442 ----
  504. X  E int doopen();
  505. X  E int doclose();
  506. X  
  507. X+ /* ### mac.c ### */
  508. X+ #ifdef MACOS
  509. X+ E int tgetch();
  510. X+ E void gethdate();
  511. X+ E int uptodate();
  512. X+ # ifndef THINKC4
  513. X+ E char *getenv();
  514. X+ E int memcmp();
  515. X+ # else
  516. X+ E int kbhit();
  517. X+ # endif
  518. X+ E int mcurs();
  519. X+ E int mputc();
  520. X+ E int mputs();
  521. X+ E int mprintf();
  522. X+ E int about();
  523. X+ #endif  /* MACOS */
  524. X+ 
  525. X+ /* ### macfile.c ### */
  526. X+ #ifdef MACOS
  527. X+ E short findNamedFile();
  528. X+ E FILE *openFile();
  529. X+ #endif    /* MACOS */
  530. X+ 
  531. X+ /* ### macinit.c ### */
  532. X+ #ifdef MACOS
  533. X+ E int initterm();
  534. X+ E int freeterm();
  535. X+ #ifdef SMALLDATA
  536. X+ E void init_decl();
  537. X+ E void free_decl();
  538. X+ #endif  /* SMALLDATA */
  539. X+ #endif    /* MACOS */
  540. X+ 
  541. X  /* ### mail.c ### */
  542. X  
  543. X  #ifdef MAIL
  544. X! # ifdef UNIX
  545. X  E void getmailstatus();
  546. X! # endif
  547. X  E void ckmailstatus();
  548. X  E void readmail();
  549. X  #endif /* MAIL */
  550. X***************
  551. X*** 410,415 ****
  552. X--- 447,453 ----
  553. X  E void enexto P((coord *,XCHAR_P,XCHAR_P,struct permonst *));
  554. X  E int goodpos P((int,int, struct permonst *));
  555. X  E void rloc P((struct monst *));
  556. X+ E void vloc P((struct monst *));
  557. X  E void init_monstr();
  558. X  E struct permonst *rndmonst();
  559. X  E struct permonst *mkclass P((CHAR_P));
  560. X***************
  561. X*** 494,499 ****
  562. X--- 532,538 ----
  563. X  E boolean is_flammable P((struct obj *));
  564. X  E boolean is_rustprone P((struct obj *));
  565. X  E boolean is_corrodeable P((struct obj *));
  566. X+ E boolean OBJ_AT P((int, int));
  567. X  #endif
  568. X  E void place_object P((struct obj *,int,int));
  569. X  E void move_object P((struct obj *,int,int));
  570. X***************
  571. X*** 582,587 ****
  572. X--- 621,627 ----
  573. X  E void set_apparxy P((struct monst *));
  574. X  E boolean mdig_tunnel P((struct monst *));
  575. X  #ifdef STUPID_CPP
  576. X+ E boolean MON_AT P((int, int));
  577. X  E void place_monster P((struct monst *, int, int));
  578. X  E void place_worm_seg P((struct monst *, int, int));
  579. X  E void remove_monster P((int, int));
  580. X***************
  581. X*** 662,667 ****
  582. X--- 702,708 ----
  583. X  E char *distant_name P((struct obj *, char *(*)(struct obj *)));
  584. X  E char *xname P((struct obj *));
  585. X  E char *doname P((struct obj *));
  586. X+ E char *singular P((struct obj *));
  587. X  E void setan P((char *,char *));
  588. X  E char *aobjnam P((struct obj *,char *));
  589. X  E char *Doname2 P((struct obj *));
  590. X***************
  591. X*** 696,730 ****
  592. X  E int dohistory();
  593. X  E int page_file P((char *,BOOLEAN_P));
  594. X  #ifdef UNIX
  595. X! #ifdef SHELL
  596. X  E int dosh();
  597. X! #endif /* SHELL */
  598. X! #if defined(SHELL) || defined(DEF_PAGER) || defined(DEF_MAILREADER)
  599. X  E int child P((int));
  600. X! #endif
  601. X  #endif /* UNIX */
  602. X  
  603. X  /* ### pcmain.c ### */
  604. X  
  605. X! #ifdef MSDOS
  606. X  E void askname();
  607. X! #ifdef CHDIR
  608. X  E void chdirx P((char *,BOOLEAN_P));
  609. X! #endif /* CHDIR */
  610. X! #endif /* MSDOS */
  611. X  
  612. X  /* ### pctty.c ### */
  613. X  
  614. X! #ifdef MSDOS
  615. X  E void gettty();
  616. X  E void settty P((char *));
  617. X  E void error V((char *,...));
  618. X! #endif /* MSDOS */
  619. X  
  620. X  /* ### pcunix.c ### */
  621. X  
  622. X! #ifdef MSDOS
  623. X! #ifndef OLD_TOS
  624. X  E void setrandom();
  625. X  E int getyear();
  626. X  E char *getdate();
  627. X--- 737,771 ----
  628. X  E int dohistory();
  629. X  E int page_file P((char *,BOOLEAN_P));
  630. X  #ifdef UNIX
  631. X! # ifdef SHELL
  632. X  E int dosh();
  633. X! # endif /* SHELL */
  634. X! # if defined(SHELL) || defined(DEF_PAGER) || defined(DEF_MAILREADER)
  635. X  E int child P((int));
  636. X! # endif
  637. X  #endif /* UNIX */
  638. X  
  639. X  /* ### pcmain.c ### */
  640. X  
  641. X! #if defined(MSDOS) || defined(MACOS)
  642. X  E void askname();
  643. X! # ifdef CHDIR
  644. X  E void chdirx P((char *,BOOLEAN_P));
  645. X! # endif /* CHDIR */
  646. X! #endif /* MSDOS || MACOS */
  647. X  
  648. X  /* ### pctty.c ### */
  649. X  
  650. X! #if defined(MSDOS) || defined(MACOS)
  651. X  E void gettty();
  652. X  E void settty P((char *));
  653. X  E void error V((char *,...));
  654. X! #endif /* MSDOS || MACOS  */
  655. X  
  656. X  /* ### pcunix.c ### */
  657. X  
  658. X! #if defined(MSDOS) || defined(MACOS)
  659. X! # ifndef OLD_TOS
  660. X  E void setrandom();
  661. X  E int getyear();
  662. X  E char *getdate();
  663. X***************
  664. X*** 733,739 ****
  665. X  E int midnight();
  666. X  E void gethdate P((char *));
  667. X  E int uptodate P((int));
  668. X! #endif /* TOS */
  669. X  E void regularize P((char *));
  670. X  #endif /* MSDOS */
  671. X  
  672. X--- 774,780 ----
  673. X  E int midnight();
  674. X  E void gethdate P((char *));
  675. X  E int uptodate P((int));
  676. X! # endif /* TOS */
  677. X  E void regularize P((char *));
  678. X  #endif /* MSDOS */
  679. X  
  680. X***************
  681. X*** 740,745 ****
  682. X--- 781,787 ----
  683. X  /* ### pickup.c ### */
  684. X  
  685. X  E void pickup P((int));
  686. X+ E struct obj *pick_obj P((struct obj *));
  687. X  E int doloot();
  688. X  E void get_all_from_box();
  689. X  E void use_container P((struct obj *, int));
  690. X***************
  691. X*** 765,773 ****
  692. X  E char *body_part P((int));
  693. X  E int poly_gender();
  694. X  #ifdef POLYSELF
  695. X! #ifdef GOLEMS
  696. X  E void ugolemeffects P((int, int));
  697. X! #endif /* GOLEMS */
  698. X  #endif
  699. X  
  700. X  /* ### potion.c ### */
  701. X--- 807,815 ----
  702. X  E char *body_part P((int));
  703. X  E int poly_gender();
  704. X  #ifdef POLYSELF
  705. X! # ifdef GOLEMS
  706. X  E void ugolemeffects P((int, int));
  707. X! # endif /* GOLEMS */
  708. X  #endif
  709. X  
  710. X  /* ### potion.c ### */
  711. X***************
  712. X*** 776,781 ****
  713. X--- 818,824 ----
  714. X  E void make_stunned P((long,BOOLEAN_P));
  715. X  E void make_blinded P((long,BOOLEAN_P));
  716. X  E void make_sick P((long,BOOLEAN_P));
  717. X+ E void make_vomiting P((long,BOOLEAN_P));
  718. X  E void make_hallucinated P((long,BOOLEAN_P));
  719. X  E int dodrink();
  720. X  E int dopotion P((struct obj *));
  721. X***************
  722. X*** 957,962 ****
  723. X--- 1000,1006 ----
  724. X  E void replshk P((struct monst *,struct monst *));
  725. X  E int inshop();
  726. X  E int inhishop P((struct monst *));
  727. X+ E boolean tended_shop P((int));
  728. X  E void obfree P((struct obj *,struct obj *));
  729. X  E int dopay();
  730. X  E void home_shk P((struct monst *));
  731. X***************
  732. X*** 1069,1077 ****
  733. X  E void cmore P((char *));
  734. X  E void clrlin();
  735. X  #ifdef NEED_VARARGS
  736. X! #if defined(USE_STDARG) || defined(USE_VARARGS)
  737. X  E void vpline P((const char *, va_list));
  738. X! #endif
  739. X  #endif
  740. X  E void pline V((const char *,...));
  741. X  E void Norep V((const char *,...));
  742. X--- 1113,1121 ----
  743. X  E void cmore P((char *));
  744. X  E void clrlin();
  745. X  #ifdef NEED_VARARGS
  746. X! # if defined(USE_STDARG) || defined(USE_VARARGS)
  747. X  E void vpline P((const char *, va_list));
  748. X! # endif
  749. X  #endif
  750. X  E void pline V((const char *,...));
  751. X  E void Norep V((const char *,...));
  752. X***************
  753. X*** 1190,1198 ****
  754. X  /* ### vmsmain.c ### */
  755. X  
  756. X  #ifdef VMS
  757. X! #ifdef CHDIR
  758. X  E void chdirx P((char *,char));
  759. X! #endif /* CHDIR */
  760. X  E void glo P((int));
  761. X  E void askname();
  762. X  #endif /* VMS */
  763. X--- 1234,1242 ----
  764. X  /* ### vmsmain.c ### */
  765. X  
  766. X  #ifdef VMS
  767. X! # ifdef CHDIR
  768. X  E void chdirx P((char *,char));
  769. X! # endif /* CHDIR */
  770. X  E void glo P((int));
  771. X  E void askname();
  772. X  #endif /* VMS */
  773. X*** include/Old/global.h    Sun Oct 15 19:28:53 1989
  774. X--- include/global.h    Sat Oct 14 19:19:35 1989
  775. X***************
  776. X*** 55,62 ****
  777. X--- 55,64 ----
  778. X  typedef schar    xchar;
  779. X  typedef    xchar    boolean;        /* 0 or 1 */
  780. X  
  781. X+ #ifndef MACOS    /* defined in MacTypes.h(LSC) or Types.h(Aztec & MPW) */
  782. X  #define    TRUE    ((boolean)1)
  783. X  #define    FALSE    ((boolean)0)
  784. X+ #endif
  785. X  
  786. X  #ifdef BITFIELDS
  787. X  #define    Bitfield(x,n)    unsigned x:n
  788. X***************
  789. X*** 72,78 ****
  790. X   * prototypes for the ANSI compilers so people quit trying to fix the prototypes
  791. X   * to match the standard and thus lose the typechecking.
  792. X   */
  793. X! #if defined(MSDOS) && !(defined(AMIGA) || defined(TOS))
  794. X  # define CHAR_P char
  795. X  # define SCHAR_P schar
  796. X  # define UCHAR_P uchar
  797. X--- 74,80 ----
  798. X   * prototypes for the ANSI compilers so people quit trying to fix the prototypes
  799. X   * to match the standard and thus lose the typechecking.
  800. X   */
  801. X! #if defined(MSDOS) || defined(THINKC4) && !(defined(AMIGA) || defined(TOS))
  802. X  # define CHAR_P char
  803. X  # define SCHAR_P schar
  804. X  # define UCHAR_P uchar
  805. X***************
  806. X*** 138,143 ****
  807. X--- 140,148 ----
  808. X  # include "amiconf.h"
  809. X  #endif
  810. X  
  811. X+ #if defined(MACOS) && !defined(MACCONF_H)
  812. X+ # include "macconf.h"
  813. X+ #endif
  814. X  
  815. X  
  816. X  /*
  817. X*** include/Old/lev.h    Sun Oct 15 19:29:30 1989
  818. X--- include/lev.h    Sat Oct 14 16:09:34 1989
  819. X***************
  820. X*** 8,14 ****
  821. X--- 8,18 ----
  822. X  #define LEV_H
  823. X  
  824. X  #ifndef OLD_TOS
  825. X+ # ifdef MACOS
  826. X+ #define OMASK    0x8000    /* O_BINARY */
  827. X+ # else
  828. X  #define OMASK    0
  829. X+ # endif
  830. X  #else
  831. X  #define msmsg    cprintf
  832. X  #define OMASK    0x8000
  833. X*** /dev/null    Sun Oct 15 19:29:49 1989
  834. X--- include/macconf.h    Sat Oct 14 11:45:16 1989
  835. X***************
  836. X*** 0 ****
  837. X--- 1,198 ----
  838. X+ /*    SCCS Id: @(#)macconf.h    3.0    88/07/21 */
  839. X+ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  840. X+ /* Copyright (c) Johnny Lee, 1989         */
  841. X+ /* NetHack may be freely redistributed.  See license for details. */
  842. X+ #ifdef MACOS
  843. X+ #ifndef MACCONF_H
  844. X+ #define MACCONF_H
  845. X+ 
  846. X+ /*
  847. X+  *  The following options are configurable:
  848. X+  */
  849. X+ 
  850. X+ #define RANDOM        1 /* have Berkeley random(3) */
  851. X+ 
  852. X+ #define PATHLEN    220    /* maximum pathlength */
  853. X+ #define FILENAME    31    /* maximum filename length (conservative) */
  854. X+ 
  855. X+ #define glo(x)    name_file(lock, x)    /* name_file used for bones */
  856. X+ #include "msdos.h"    /* contains necessary externs for [os_name].c */
  857. X+ extern char *configfile;
  858. X+ #define NO_SIGNAL    1
  859. X+ #define    perror(x)
  860. X+ 
  861. X+ /*
  862. X+  *  The remaining code shouldn't need modification.
  863. X+  */
  864. X+ 
  865. X+ #ifndef SYSTEM_H
  866. X+ #include "system.h"
  867. X+ #endif
  868. X+ 
  869. X+ 
  870. X+ #ifdef RANDOM
  871. X+ /* Use the high quality random number routines. */
  872. X+ #define Rand()    random()
  873. X+ #define Srand(seed)    srandom(seed)
  874. X+ #else
  875. X+ #define Rand()    rand()
  876. X+ #define Srand(seed)    srand(seed)
  877. X+ #endif /* RANDOM */
  878. X+ 
  879. X+ #ifndef REDO
  880. X+ #undef    Getchar
  881. X+ #define Getchar tgetch
  882. X+ #endif
  883. X+ 
  884. X+ #ifdef THINK_C
  885. X+ 
  886. X+ #define index    strchr
  887. X+ #define rindex    strrchr
  888. X+ #include <time.h>
  889. X+ #define    FCMASK    O_WRONLY | O_BINARY | O_CREAT    /* file creation mask */
  890. X+ 
  891. X+ #ifdef LSC
  892. X+ #include    <types.h>
  893. X+ #include    <io.h>
  894. X+ #define    memcpy(x,y,j)    movmem(y,x,j)
  895. X+ extern char    *calloc();
  896. X+ #else
  897. X+ #include    <Fcntl.h>
  898. X+ #include    <Stddef.h>
  899. X+ #include    <Stdlib.h>
  900. X+ #include    <String.h>
  901. X+ #undef getuid
  902. X+ #ifndef MAKEDEFS_C
  903. X+ #ifdef stdout
  904. X+ #undef stdout
  905. X+ #define stdout (FILE *)NULL
  906. X+ #endif
  907. X+ #endif
  908. X+ #endif
  909. X+ 
  910. X+ #include    <Quickdraw.h>
  911. X+ #include    <FontMgr.h>
  912. X+ #include    <EventMgr.h>
  913. X+ #include    <WindowMgr.h>
  914. X+ #include    <MenuMgr.h>
  915. X+ #include    <StdFilePkg.h>
  916. X+ #include    <SegmentLdr.h>
  917. X+ #include    <ToolboxUtil.h>
  918. X+ #include    <OSUtil.h>
  919. X+ #include    <DialogMgr.h>
  920. X+ #include    <FileMgr.h>
  921. X+ #include    <HFS.h>
  922. X+ #include    <Color.h>
  923. X+ #include    <ResourceMgr.h>
  924. X+ 
  925. X+ #ifdef fflush
  926. X+ #undef    fflush
  927. X+ #define    fflush(x)
  928. X+ #endif
  929. X+ 
  930. X+ /* these two defines for variables in decl.c; they conflict with */
  931. X+ /* variables in Quickdraw.h - the Quickdraw variables are never used in NH */
  932. X+ #define    black    Black
  933. X+ #define    white    White
  934. X+ 
  935. X+ 
  936. X+ #else    /* Aztec and MPW */
  937. X+ 
  938. X+ #ifdef AZTEC
  939. X+ #include    <utime.h>    /* AZTEC 3.6c */
  940. X+ #define    curs(x,y)    tcurs(x,y)
  941. X+ #else
  942. X+ #include    <Time.h>    /* MPW 3.0 */
  943. X+ #endif
  944. X+ 
  945. X+ 
  946. X+ #include    <Quickdraw.h>
  947. X+ #include    <Fonts.h>
  948. X+ #include    <Events.h>
  949. X+ #include    <Windows.h>
  950. X+ #include    <Menus.h>
  951. X+ #include    <Packages.h>
  952. X+ #include    <SegLoad.h>
  953. X+ #include    <ToolUtils.h>
  954. X+ #include    <OSUtils.h>
  955. X+ #include    <Dialogs.h>
  956. X+ #include    <Files.h>
  957. X+ #include    <Resources.h>
  958. X+ #ifdef MPW
  959. X+ #include    <Script.h>
  960. X+ #include    <SysEqu.h>
  961. X+ #endif
  962. X+ #include    <Signal.h>
  963. X+ #include    <String.h>
  964. X+ #include    <FCntl.h>
  965. X+ #define    FCMASK    O_WRONLY | O_CREAT    /* file creation mask */
  966. X+ #endif
  967. X+ 
  968. X+ /* typdef and defines for special custom termcap routines */
  969. X+ typedef struct term_info {
  970. X+     short    tcur_x,tcur_y;
  971. X+     short    fontNum,fontSize;
  972. X+     short    ascent,descent,height,charWidth;
  973. X+     short    maxRow,maxCol;
  974. X+     char    **screen;
  975. X+     short    inColor;
  976. X+     short    auxFileVRefNum;
  977. X+     short    recordVRefNum;
  978. X+     SysEnvRec    system;
  979. X+     char    *keyMap;
  980. X+     short    color[8];
  981. X+     Handle    shortMBarHandle,
  982. X+             fullMBarHandle;
  983. X+ } term_info;
  984. X+ 
  985. X+ #define TEXTCOLOR    1
  986. X+ 
  987. X+ #define    appleMenu    101
  988. X+ #define    fileMenu    102
  989. X+ #define    editMenu    103
  990. X+ #define    inventMenu    104
  991. X+ #define actionMenu    105
  992. X+ #define prepMenu    106
  993. X+ #define    moveMenu    107
  994. X+ #define extendMenu    108
  995. X+ 
  996. X+ #ifdef THINK_C
  997. X+ #define MAINGRAFPORT    thePort
  998. X+ #define    ARROW_CURSOR    arrow
  999. X+ #define    SCREEN_BITS    screenBits
  1000. X+ #else
  1001. X+ #define MAINGRAFPORT    qd.thePort
  1002. X+ #define    ARROW_CURSOR    qd.arrow
  1003. X+ #define    SCREEN_BITS    qd.screenBits
  1004. X+ #endif
  1005. X+ 
  1006. X+ /* used in mac.c */
  1007. X+ #define Screen_Border    4
  1008. X+ #define    TOP_OFFSET        30
  1009. X+ #define    LEFT_OFFSET    10
  1010. X+ 
  1011. X+ /* for macflags variable */
  1012. X+ #define    fZoomOnContextSwitch        0x200
  1013. X+ #define    fUseCustomFont        0x100
  1014. X+ #define    fToggleNumPad        0x80
  1015. X+ #define    fInvertedScreen        0x40
  1016. X+ #define    fExtCmdSeq1            0x20
  1017. X+ #define    fExtCmdSeq2            0x10
  1018. X+ #define    fExtCmdSeq3            0x08
  1019. X+ #define    fDoNonKeyEvt        0x02
  1020. X+ #define    fDoUpdate            0x01
  1021. X+ 
  1022. X+ 
  1023. X+ #define    CREATOR    'nh30'
  1024. X+ #define    EXPLORE_TYPE    'XPLR'
  1025. X+ #define    SAVE_TYPE    'SAVE'
  1026. X+ #define    BONES_TYPE    'BONE'
  1027. X+ #define    LEVEL_TYPE    'LEVL'
  1028. X+ #define    HACK_DATA    'HDTA'
  1029. X+ #define MONST_DATA    101
  1030. X+ #define    DEFAULT_DATA    100
  1031. X+ 
  1032. X+ #include "extern.h"
  1033. X+ 
  1034. X+ #endif /* MACCONF_H /* */
  1035. X+ #endif /* MACOS / */
  1036. X*** include/Old/monsym.h    Sun Oct 15 19:31:02 1989
  1037. X--- include/monsym.h    Sat Oct 14 23:23:25 1989
  1038. X***************
  1039. X*** 14,20 ****
  1040. X  #define    S_GREMLIN    'g'
  1041. X  #define    S_HUMANOID    'h'
  1042. X  #define    S_IMP        'i'
  1043. X! #define    S_J        'j'
  1044. X  #define    S_KOBOLD    'k'
  1045. X  #define    S_LICH        'l'
  1046. X  #define    S_MIMIC        'm'
  1047. X--- 14,20 ----
  1048. X  #define    S_GREMLIN    'g'
  1049. X  #define    S_HUMANOID    'h'
  1050. X  #define    S_IMP        'i'
  1051. X! #define    S_JELLY        'j'
  1052. X  #define    S_KOBOLD    'k'
  1053. X  #define    S_LICH        'l'
  1054. X  #define    S_MIMIC        'm'
  1055. X***************
  1056. X*** 21,27 ****
  1057. X  #define    S_NAGA        'n'
  1058. X  #define    S_ORC        'o'
  1059. X  #define    S_PIERCER    'p'
  1060. X! #define    S_QUADRUPED        'q'
  1061. X  #define    S_RODENT    'r'
  1062. X  #define    S_SPIDER    's'
  1063. X  #define    S_TRAPPER    't'
  1064. X--- 21,27 ----
  1065. X  #define    S_NAGA        'n'
  1066. X  #define    S_ORC        'o'
  1067. X  #define    S_PIERCER    'p'
  1068. X! #define    S_QUADRUPED    'q'
  1069. X  #define    S_RODENT    'r'
  1070. X  #define    S_SPIDER    's'
  1071. X  #define    S_TRAPPER    't'
  1072. X***************
  1073. X*** 40,46 ****
  1074. X  #define    S_GNOME        'G'
  1075. X  #define    S_GIANT        'H'
  1076. X  #define    S_STALKER    'I'
  1077. X! #define    S_JELLY        'J'
  1078. X  #define    S_KOP        'K'
  1079. X  #define    S_LEPRECHAUN    'L'
  1080. X  #define    S_MUMMY        'M'
  1081. X--- 40,46 ----
  1082. X  #define    S_GNOME        'G'
  1083. X  #define    S_GIANT        'H'
  1084. X  #define    S_STALKER    'I'
  1085. X! #define    S_JABBERWOCK    'J'
  1086. X  #define    S_KOP        'K'
  1087. X  #define    S_LEPRECHAUN    'L'
  1088. X  #define    S_MUMMY        'M'
  1089. X*** include/Old/obj.h    Sun Oct 15 19:31:32 1989
  1090. X--- include/obj.h    Thu Oct  5 21:20:45 1989
  1091. X***************
  1092. X*** 31,36 ****
  1093. X--- 31,37 ----
  1094. X      Bitfield(oinvis,1);    /* not yet implemented */
  1095. X      Bitfield(olocked,1);    /* object is locked */
  1096. X  #define recharged olocked    /* recharged once */
  1097. X+ #define oeaten    olocked        /* partially eaten food */
  1098. X      Bitfield(otrapped,1);    /* container is trapped */
  1099. X  #define opoisoned otrapped    /* weapon has been coated with poison */
  1100. X      Bitfield(odispl,1);
  1101. X***************
  1102. X*** 42,52 ****
  1103. X      Bitfield(unpaid,1);    /* on some bill */
  1104. X      Bitfield(rustfree,1);
  1105. X  #define flameproof     rustfree/* for non-metal armor items */
  1106. X      Bitfield(no_charge,1);    /* if shk shouldn't charge for this */
  1107. X      Bitfield(onamelth,6);
  1108. X      long age;        /* creation date */
  1109. X      long owornmask;
  1110. X- #define oeaten        rustfree
  1111. X  
  1112. X  /* note that TIMEOUT in you.h is defined as 07777L; no bits for items that
  1113. X   * confer properties may overlap that mask, or timeout.c will happily 
  1114. X--- 43,53 ----
  1115. X      Bitfield(unpaid,1);    /* on some bill */
  1116. X      Bitfield(rustfree,1);
  1117. X  #define flameproof     rustfree/* for non-metal armor items */
  1118. X+ #define in_use         rustfree/* for magic items before useup items */
  1119. X      Bitfield(no_charge,1);    /* if shk shouldn't charge for this */
  1120. X      Bitfield(onamelth,6);
  1121. X      long age;        /* creation date */
  1122. X      long owornmask;
  1123. X  
  1124. X  /* note that TIMEOUT in you.h is defined as 07777L; no bits for items that
  1125. X   * confer properties may overlap that mask, or timeout.c will happily 
  1126. X***************
  1127. X*** 80,86 ****
  1128. X  #define newobj(xl)    (struct obj *) alloc((unsigned)(xl) + sizeof(struct obj))
  1129. X  #define    ONAME(otmp)    ((char *) otmp->oextra)
  1130. X  #define    OGOLD(otmp)    (otmp->oextra[0])
  1131. X- #define    OEATEN(otmp)    (otmp->oeaten)
  1132. X  
  1133. X  # ifndef STUPID_CPP    /* otherwise these macros are functions */
  1134. X  
  1135. X--- 81,86 ----
  1136. X*** include/Old/patchlevel.h    Sun Oct 15 19:31:56 1989
  1137. X--- include/patchlevel.h    Sun Oct 15 19:17:26 1989
  1138. X***************
  1139. X*** 43,46 ****
  1140. X   *  assorted bug fixes
  1141. X   */
  1142. X  
  1143. X! #define PATCHLEVEL    4
  1144. X--- 43,55 ----
  1145. X   *  assorted bug fixes
  1146. X   */
  1147. X  
  1148. X! /*
  1149. X!  *  Patch 5, October 15, 1989
  1150. X!  *  add support for Macintosh OS (courtesy Johnny Lee)
  1151. X!  *  fix annoying dependency loop via new color.h file
  1152. X!  *  allow interruption while eating -- general handling of partially eaten food
  1153. X!  *  smarter treatment of iron balls
  1154. X!  *  a handful of other bug fixes
  1155. X!  */
  1156. X! 
  1157. X! #define PATCHLEVEL    5
  1158. X*** include/Old/pcconf.h    Sun Oct 15 19:32:10 1989
  1159. X--- include/pcconf.h    Sat Oct 14 19:19:35 1989
  1160. X***************
  1161. X*** 16,22 ****
  1162. X  
  1163. X  #define DGK            /* MS DOS specific enhancements by dgk */
  1164. X  
  1165. X! #define TERMLIB        /* enable use of termcap file /etc/termcap */
  1166. X              /* or ./termcap for MSDOS (SAC) */
  1167. X              /* compile and link in Fred Fish's termcap library, */
  1168. X              /* enclosed in TERMCAP.ARC, to use this */
  1169. X--- 16,22 ----
  1170. X  
  1171. X  #define DGK            /* MS DOS specific enhancements by dgk */
  1172. X  
  1173. X! /* #define TERMLIB        /* enable use of termcap file /etc/termcap */
  1174. X              /* or ./termcap for MSDOS (SAC) */
  1175. X              /* compile and link in Fred Fish's termcap library, */
  1176. X              /* enclosed in TERMCAP.ARC, to use this */
  1177. X*** include/Old/permonst.h    Sun Oct 15 19:32:21 1989
  1178. X--- include/permonst.h    Sat Oct 14 16:10:57 1989
  1179. X***************
  1180. X*** 32,38 ****
  1181. X--- 32,42 ----
  1182. X  
  1183. X  struct permonst {
  1184. X  
  1185. X+ #if defined(SMALLDATA) && !defined(MAKEDEFS_C)
  1186. X+     char        mname[24], mlet;        /* full name and sym */
  1187. X+ #else
  1188. X      char        *mname, mlet;        /* full name and sym */
  1189. X+ #endif
  1190. X      schar        mlevel,            /* base monster level */
  1191. X              mmove,            /* move speed */
  1192. X              ac,            /* (base) armor class */
  1193. X***************
  1194. X*** 51,57 ****
  1195. X  # endif
  1196. X  };
  1197. X  
  1198. X! extern struct permonst mons[];        /* the master list of monster types */
  1199. X  extern struct permonst playermon, *uasmon;    /* you in the same terms */
  1200. X  
  1201. X  #endif /* PERMONST_H /**/
  1202. X--- 55,95 ----
  1203. X  # endif
  1204. X  };
  1205. X  
  1206. X! extern struct permonst
  1207. X! #if defined(SMALLDATA) && !defined(MAKEDEFS_C)
  1208. X!             *mons;
  1209. X! #else
  1210. X!             mons[];        /* the master list of monster types */
  1211. X! #endif
  1212. X  extern struct permonst playermon, *uasmon;    /* you in the same terms */
  1213. X+ 
  1214. X+ #if defined(SMALLDATA) && defined(MAKEDEFS_C)
  1215. X+ 
  1216. X+ typedef struct pmpart {
  1217. X+     char        mlet;            /* full name and sym */
  1218. X+     schar        mlevel,            /* base monster level */
  1219. X+             mmove,            /* move speed */
  1220. X+             ac,            /* (base) armor class */
  1221. X+             mr,            /* (base) magic resistance */
  1222. X+             maligntyp;        /* basic monster alignment */
  1223. X+     unsigned    geno;            /* creation/geno mask value */
  1224. X+     struct    attack    mattk[NATTK];        /* attacks matrix */
  1225. X+     unsigned    cwt,            /* weight of corpse */
  1226. X+             cnutrit;        /* its nutritional value */
  1227. X+     short        pxlth;            /* length of extension */
  1228. X+     uchar        msound;            /* noise it makes */
  1229. X+     long        mflags1,        /* boolean bitflags */
  1230. X+             mflags2;        /* more boolean bitflags */
  1231. X+ # ifdef TEXTCOLOR
  1232. X+     uchar        mcolor;            /* color to use */
  1233. X+ # endif
  1234. X+ } pmpart;
  1235. X+ 
  1236. X+ typedef struct pmstr {
  1237. X+     char        mname[24];        /* full name and sym */
  1238. X+     pmpart        pmp;
  1239. X+ } pmstr;
  1240. X+ 
  1241. X+ #endif
  1242. X  
  1243. X  #endif /* PERMONST_H /**/
  1244. X*** include/Old/prop.h    Sun Oct 15 19:32:33 1989
  1245. X--- include/prop.h    Tue Oct  3 20:02:02 1989
  1246. X***************
  1247. X*** 48,53 ****
  1248. X  #define ANTIMAGIC        41
  1249. X  #define DISPLACED        42
  1250. X  #define CLAIRVOYANT        43
  1251. X! #define LAST_PROP        (CLAIRVOYANT)        /* the last property */
  1252. X  
  1253. X  #endif /* PROP_H /**/
  1254. X--- 48,54 ----
  1255. X  #define ANTIMAGIC        41
  1256. X  #define DISPLACED        42
  1257. X  #define CLAIRVOYANT        43
  1258. X! #define VOMITING        44
  1259. X! #define LAST_PROP        (VOMITING)        /* the last property */
  1260. X  
  1261. X  #endif /* PROP_H /**/
  1262. X*** include/Old/rm.h    Sun Oct 15 19:32:45 1989
  1263. X--- include/rm.h    Sat Oct 14 16:12:54 1989
  1264. X***************
  1265. X*** 214,245 ****
  1266. X  #define ladder        doormask
  1267. X  #define drawbridgemask    doormask
  1268. X  
  1269. X  typedef struct
  1270. X  {
  1271. X      struct rm        locations[COLNO][ROWNO];
  1272. X      struct obj        *objects[COLNO][ROWNO];
  1273. X      struct monst    *monsters[COLNO][ROWNO];
  1274. X      struct obj        *objlist;
  1275. X      struct monst    *monlist;
  1276. X  }
  1277. X! level_t;
  1278. X  
  1279. X! extern level_t    level;    /* structure describing the current level */
  1280. X  
  1281. X  /*
  1282. X   * Macros for compatibility with old code. Someday these will go away.
  1283. X   */
  1284. X- #define OBJ_AT(x, y)    (level.objects[x][y] != (struct obj *)0)
  1285. X- #define MON_AT(x, y)    (level.monsters[x][y] != (struct monst *)0)
  1286. X  #define levl        level.locations
  1287. X  #define fobj        level.objlist
  1288. X  #define fmon        level.monlist
  1289. X  
  1290. X! #ifndef STUPID_CPP    /* otherwise these macros are functions in monmove.c */
  1291. X  /*
  1292. X   * Macros for encapsulation of level.monsters references.
  1293. X   */
  1294. X! #define place_monster(m, x, y)    level.monsters[m->mx=x][m->my=y] = m
  1295. X  #define place_worm_seg(m, x, y) level.monsters[x][y] = m
  1296. X  #define remove_monster(x, y)    level.monsters[x][y] = (struct monst *)0
  1297. X  #define m_at(x, y)        level.monsters[x][y]
  1298. X--- 214,264 ----
  1299. X  #define ladder        doormask
  1300. X  #define drawbridgemask    doormask
  1301. X  
  1302. X+ #ifdef MACOS
  1303. X  typedef struct
  1304. X  {
  1305. X+     struct rm        **locations;
  1306. X+     struct obj        ***objects;
  1307. X+     struct monst    ***monsters;
  1308. X+     struct obj        *objlist;
  1309. X+     struct monst    *monlist;
  1310. X+ }
  1311. X+ dlevel_t;
  1312. X+ #else
  1313. X+ typedef struct
  1314. X+ {
  1315. X      struct rm        locations[COLNO][ROWNO];
  1316. X+ #ifndef MICROPORT_BUG
  1317. X      struct obj        *objects[COLNO][ROWNO];
  1318. X      struct monst    *monsters[COLNO][ROWNO];
  1319. X+ #else
  1320. X+     struct obj        *objects[1][ROWNO];
  1321. X+     char        *yuk1[COLNO-1][ROWNO];
  1322. X+     struct monst    *monsters[1][ROWNO];
  1323. X+     char        *yuk2[COLNO-1][ROWNO];
  1324. X+ #endif
  1325. X      struct obj        *objlist;
  1326. X      struct monst    *monlist;
  1327. X  }
  1328. X! dlevel_t;
  1329. X! #endif
  1330. X  
  1331. X! extern dlevel_t    level;    /* structure describing the current level */
  1332. X  
  1333. X  /*
  1334. X   * Macros for compatibility with old code. Someday these will go away.
  1335. X   */
  1336. X  #define levl        level.locations
  1337. X  #define fobj        level.objlist
  1338. X  #define fmon        level.monlist
  1339. X  
  1340. X! #ifndef STUPID_CPP    /* otherwise these macros are functions */
  1341. X! #define OBJ_AT(x, y)    (level.objects[x][y] != (struct obj *)0)
  1342. X  /*
  1343. X   * Macros for encapsulation of level.monsters references.
  1344. X   */
  1345. X! #define MON_AT(x, y)    (level.monsters[x][y] != (struct monst *)0)
  1346. X! #define place_monster(m, x, y)    m->mx=x,m->my=y,level.monsters[m->mx][m->my]=m
  1347. X  #define place_worm_seg(m, x, y) level.monsters[x][y] = m
  1348. X  #define remove_monster(x, y)    level.monsters[x][y] = (struct monst *)0
  1349. X  #define m_at(x, y)        level.monsters[x][y]
  1350. X*** include/Old/system.h    Sun Oct 15 19:33:19 1989
  1351. X--- include/system.h    Sat Oct 14 16:16:48 1989
  1352. X***************
  1353. X*** 7,18 ****
  1354. X  
  1355. X  #define E extern
  1356. X  
  1357. X! #ifdef AMIGA
  1358. X  #define _SIZE_T
  1359. X  typedef unsigned int    size_t;
  1360. X! #else
  1361. X  # include <sys/types.h>
  1362. X  #endif
  1363. X  
  1364. X  #ifdef ULTRIX
  1365. X  /* The Ultrix v3.0 <sys/types.h> seems to be very wrong. */
  1366. X--- 7,23 ----
  1367. X  
  1368. X  #define E extern
  1369. X  
  1370. X! #ifndef THINKC4
  1371. X! # if defined(AMIGA) || defined(MACOS)
  1372. X  #define _SIZE_T
  1373. X  typedef unsigned int    size_t;
  1374. X! # else
  1375. X  # include <sys/types.h>
  1376. X+ # endif
  1377. X  #endif
  1378. X+ #if defined(AZTEC) || defined(THINKC4)
  1379. X+ typedef long    off_t;
  1380. X+ #endif
  1381. X  
  1382. X  #ifdef ULTRIX
  1383. X  /* The Ultrix v3.0 <sys/types.h> seems to be very wrong. */
  1384. X***************
  1385. X*** 20,26 ****
  1386. X  #define time_t long
  1387. X  #endif
  1388. X  
  1389. X! #if defined(TOS) && defined(__GNUC__)
  1390. X  #define _SIZE_T
  1391. X  #endif
  1392. X  
  1393. X--- 25,31 ----
  1394. X  #define time_t long
  1395. X  #endif
  1396. X  
  1397. X! #if defined(TOS) && defined(__GNUC__) && !defined(_SIZE_T)
  1398. X  #define _SIZE_T
  1399. X  #endif
  1400. X  
  1401. X***************
  1402. X*** 67,76 ****
  1403. X  E void exit P((int));
  1404. X  # endif /* MSDOS */
  1405. X  E void free P((genericptr_t));
  1406. X  E void perror P((const char *));
  1407. X  #endif
  1408. X  
  1409. X! #if defined(BSD) || defined(ULTRIX)
  1410. X  E int qsort();
  1411. X  #else
  1412. X  E void qsort P((genericptr_t,size_t,size_t,int(*)(genericptr_t,genericptr_t)));
  1413. X--- 72,83 ----
  1414. X  E void exit P((int));
  1415. X  # endif /* MSDOS */
  1416. X  E void free P((genericptr_t));
  1417. X+ # ifndef MACOS
  1418. X  E void perror P((const char *));
  1419. X+ # endif
  1420. X  #endif
  1421. X  
  1422. X! #if defined(BSD) || defined(ULTRIX) || (defined(MACOS) && !defined(THINKC4))
  1423. X  E int qsort();
  1424. X  #else
  1425. X  E void qsort P((genericptr_t,size_t,size_t,int(*)(genericptr_t,genericptr_t)));
  1426. X***************
  1427. X*** 83,88 ****
  1428. X--- 90,97 ----
  1429. X  #else
  1430. X  E long lseek P((int,long,int));
  1431. X  E int write P((int,genericptr_t,unsigned));
  1432. X+ #endif /* ULTRIX */
  1433. X+ 
  1434. X  #ifdef MSDOS
  1435. X  E int close P((int));
  1436. X  E int read P((int,genericptr_t,unsigned int));
  1437. X***************
  1438. X*** 90,99 ****
  1439. X  E int dup2 P((int, int));
  1440. X  E int setmode P((int,int));
  1441. X  E int kbhit P((void));
  1442. X- #endif
  1443. X- #endif /* ULTRIX */
  1444. X- 
  1445. X- #ifdef MSDOS
  1446. X  E int chdir P((char *));
  1447. X  E char *getcwd P((char *,int));
  1448. X  #endif
  1449. X--- 99,104 ----
  1450. X***************
  1451. X*** 142,148 ****
  1452. X  E char    *strcat P((char *,const char *));
  1453. X  E char    *strncat P((char *,const char *,size_t));
  1454. X  
  1455. X! #if defined(SYSV) || defined(MSDOS)
  1456. X  E char    *strchr P((const char *,int));
  1457. X  E char    *strrchr P((const char *,int));
  1458. X  #else /* BSD */
  1459. X--- 147,153 ----
  1460. X  E char    *strcat P((char *,const char *));
  1461. X  E char    *strncat P((char *,const char *,size_t));
  1462. X  
  1463. X! #if defined(SYSV) || defined(MSDOS) || defined(THINK_C)
  1464. X  E char    *strchr P((const char *,int));
  1465. X  E char    *strrchr P((const char *,int));
  1466. X  #else /* BSD */
  1467. X***************
  1468. X*** 153,159 ****
  1469. X  
  1470. X  E int    strcmp P((const char *,const char *));
  1471. X  E int    strncmp P((const char *,const char *,size_t));
  1472. X! #ifdef MSDOS
  1473. X  E size_t strlen P((const char *));
  1474. X  #else
  1475. X  E int    strlen();
  1476. X--- 158,164 ----
  1477. X  
  1478. X  E int    strcmp P((const char *,const char *));
  1479. X  E int    strncmp P((const char *,const char *,size_t));
  1480. X! #if defined(MSDOS) || defined(THINKC4)
  1481. X  E size_t strlen P((const char *));
  1482. X  #else
  1483. X  E int    strlen();
  1484. X***************
  1485. X*** 188,194 ****
  1486. X  #define Sprintf    (void) sprintf
  1487. X  #define Strcat    (void) strcat
  1488. X  #define Strcpy    (void) strcpy
  1489. X! #define Printf  (void) printf
  1490. X  
  1491. X  #ifdef NEED_VARARGS
  1492. X  #define Vprintf (void) vprintf
  1493. X--- 193,212 ----
  1494. X  #define Sprintf    (void) sprintf
  1495. X  #define Strcat    (void) strcat
  1496. X  #define Strcpy    (void) strcpy
  1497. X! 
  1498. X! #if defined(MACOS) && !defined(MAKEDEFS_C)
  1499. X! #undef printf
  1500. X! #undef puts
  1501. X! #undef putchar
  1502. X! #undef putc
  1503. X! #define printf  (void) mprintf
  1504. X! #define    puts    mputs
  1505. X! #define putchar    mputc
  1506. X! #define    putc    mputc
  1507. X! #define Printf    (void) mprintf
  1508. X! #else
  1509. X! #define Printf    (void) printf
  1510. X! #endif
  1511. X  
  1512. X  #ifdef NEED_VARARGS
  1513. X  #define Vprintf (void) vprintf
  1514. X***************
  1515. X*** 206,218 ****
  1516. X  
  1517. X  /* time functions */
  1518. X  
  1519. X  E struct tm *localtime P((const time_t *));
  1520. X  
  1521. X! #if (defined(ULTRIX) || defined(SYSV) || defined(MSDOS)) && !defined(AMIGA)
  1522. X  E time_t time P((time_t *));
  1523. X! #else
  1524. X  E long time P((time_t *));
  1525. X! #endif /* ULTRIX */
  1526. X  
  1527. X  #ifdef MSDOS
  1528. X  E int abs P((int));
  1529. X--- 224,238 ----
  1530. X  
  1531. X  /* time functions */
  1532. X  
  1533. X+ #ifndef MACOS
  1534. X  E struct tm *localtime P((const time_t *));
  1535. X  
  1536. X! # if defined(ULTRIX) || defined(SYSV) || (defined(MSDOS) && !defined(AMIGA))
  1537. X  E time_t time P((time_t *));
  1538. X! # else
  1539. X  E long time P((time_t *));
  1540. X! # endif /* ULTRIX */
  1541. X! #endif
  1542. X  
  1543. X  #ifdef MSDOS
  1544. X  E int abs P((int));
  1545. X*** include/Old/tosconf.h    Sun Oct 15 19:33:34 1989
  1546. X--- include/tosconf.h    Sat Oct 14 19:19:35 1989
  1547. X***************
  1548. X*** 38,43 ****
  1549. X--- 38,44 ----
  1550. X  #define RANDOM
  1551. X  #define SHELL
  1552. X  #define TEXTCOLOR
  1553. X+ #define TERMLIB
  1554. X  
  1555. X  #ifndef MSDOS_H
  1556. X  #include "msdos.h"
  1557. X***************
  1558. X*** 45,50 ****
  1559. X--- 46,53 ----
  1560. X  #ifndef PCCONF_H
  1561. X  #include "pcconf.h"          /* remainder of stuff is same as the PC */
  1562. X  #endif
  1563. X+ #ifdef TERMLIB
  1564. X  #undef ANSI_DEFAULT
  1565. X+ #endif
  1566. X  #endif /* TOSCONF_H /* */
  1567. X  #endif /* TOS /* */
  1568. X*** include/Old/tradstdc.h    Sun Oct 15 19:33:46 1989
  1569. X--- include/tradstdc.h    Wed Oct 11 19:06:46 1989
  1570. X***************
  1571. X*** 54,60 ****
  1572. X          va_list the_args; typ1 var1; typ2 var2;
  1573. X  #  define VA_ARGS        the_args
  1574. X  #  define VA_START(x)        va_start(the_args)
  1575. X! #  define VA_INIT(var1,typ1)     va_arg(var1, typ1)
  1576. X  #  define VA_NEXT(var1,typ1)    var1 = va_arg(the_args,typ1)
  1577. X  #  define VA_END()        va_end(the_args)
  1578. X  # else
  1579. X--- 54,60 ----
  1580. X          va_list the_args; typ1 var1; typ2 var2;
  1581. X  #  define VA_ARGS        the_args
  1582. X  #  define VA_START(x)        va_start(the_args)
  1583. X! #  define VA_INIT(var1,typ1)     var1 = va_arg(the_args, typ1)
  1584. X  #  define VA_NEXT(var1,typ1)    var1 = va_arg(the_args,typ1)
  1585. X  #  define VA_END()        va_end(the_args)
  1586. X  # else
  1587. X*** include/Old/unixconf.h    Sun Oct 15 19:34:17 1989
  1588. X--- include/unixconf.h    Sat Oct 14 19:19:34 1989
  1589. X***************
  1590. X*** 36,47 ****
  1591. X  
  1592. X  /* #define PYRAMID_BUG     /* avoid a bug on the Pyramid */
  1593. X  /* #define APOLLO    /* same for the Apollo */
  1594. X! /* #define RANDOM    /* if neither random/srandom nor lrand48/srand48
  1595. X!                is available from your system */
  1596. X  /* #define MICROPORT_286_BUG /* Changes needed in termcap.c to get it to
  1597. X                 run with Microport Sys V/AT version 2.4.
  1598. X                 By Jay Maynard */
  1599. X  
  1600. X  /* #define TEXTCOLOR    /* Use System V r3.2 terminfo color support */
  1601. X  
  1602. X  
  1603. X--- 36,48 ----
  1604. X  
  1605. X  /* #define PYRAMID_BUG     /* avoid a bug on the Pyramid */
  1606. X  /* #define APOLLO    /* same for the Apollo */
  1607. X! /* #define MICROPORT_BUG /* problems with large arrays in structs */
  1608. X  /* #define MICROPORT_286_BUG /* Changes needed in termcap.c to get it to
  1609. X                 run with Microport Sys V/AT version 2.4.
  1610. X                 By Jay Maynard */
  1611. X  
  1612. X+ /* #define RANDOM    /* if neither random/srandom nor lrand48/srand48
  1613. X+                is available from your system */
  1614. X  /* #define TEXTCOLOR    /* Use System V r3.2 terminfo color support */
  1615. X  
  1616. X  
  1617. X*** include/Old/youprop.h    Sun Oct 15 19:35:11 1989
  1618. X--- include/youprop.h    Sun Oct 15 17:23:36 1989
  1619. X***************
  1620. X*** 163,167 ****
  1621. X--- 163,168 ----
  1622. X  #define Antimagic        u.uprops[ANTIMAGIC].p_flgs
  1623. X  #define Displaced        u.uprops[DISPLACED].p_flgs
  1624. X  #define Clairvoyant        u.uprops[CLAIRVOYANT].p_flgs
  1625. X+ #define Vomiting        u.uprops[VOMITING].p_flgs
  1626. X  
  1627. X  #endif /* YOUPROP_H /**/
  1628. X*** others/Old/Makefile.tcc    Sun Oct 15 18:14:11 1989
  1629. X--- others/Makefile.tcc    Fri Sep 29 11:54:15 1989
  1630. X***************
  1631. X*** 153,158 ****
  1632. X--- 153,159 ----
  1633. X      @$(TLINK) $(TLFLAGS) $(C0) $(SPLEVOBJS),$@,,$(LIBS);
  1634. X  
  1635. X  o\lev_comp.obj:  $(HACK_H) $(INCL)\sp_lev.h
  1636. X+     $(CC) $(CFLAGS) -A- $*.c
  1637. X  o\lev_lex.obj:  $(INCL)\lev_comp.h $(HACK_H) $(INCL)\sp_lev.h
  1638. X  o\lev_main.obj:  $(HACK_H) $(INCL)\sp_lev.h
  1639. X  
  1640. X***************
  1641. X*** 227,233 ****
  1642. X      del date.h
  1643. X      del onames.h
  1644. X      del pm.h
  1645. X!     touch date.h onames.h pm.h
  1646. X      cd $(AUX)
  1647. X      del data
  1648. X      del rumors
  1649. X--- 228,234 ----
  1650. X      del date.h
  1651. X      del onames.h
  1652. X      del pm.h
  1653. X!     touch onames.h pm.h
  1654. X      cd $(AUX)
  1655. X      del data
  1656. X      del rumors
  1657. X*** others/Old/pcmain.c    Sun Oct 15 18:15:37 1989
  1658. X--- others/pcmain.c    Sun Oct 15 12:47:03 1989
  1659. X***************
  1660. X*** 8,15 ****
  1661. X--- 8,23 ----
  1662. X  #ifndef NO_SIGNAL
  1663. X  #include <signal.h>
  1664. X  #endif
  1665. X+ #ifdef MACOS
  1666. X+ extern WindowPtr    HackWindow;
  1667. X+ extern short *switches;
  1668. X+ extern short macflags;
  1669. X+ #define msmsg mprintf
  1670. X+ #endif
  1671. X  
  1672. X+ #ifndef MACOS
  1673. X  char orgdir[PATHLEN];
  1674. X+ #endif
  1675. X  char SAVEF[FILENAME];
  1676. X  
  1677. X  char *hname = "NetHack";    /* used for syntax messages */
  1678. X***************
  1679. X*** 38,44 ****
  1680. X--- 46,60 ----
  1681. X  #ifdef OLD_TOS
  1682. X  #define OMASK    0x8000
  1683. X  #else
  1684. X+ # ifdef MACOS
  1685. X+ #  ifdef AZTEC
  1686. X+ #define OMASK    O_RDONLY
  1687. X+ #  else
  1688. X+ #define OMASK    (O_RDONLY | O_BINARY )
  1689. X+ #  endif
  1690. X+ # else
  1691. X  #define OMASK    0
  1692. X+ # endif
  1693. X  #endif
  1694. X  
  1695. X  int
  1696. X***************
  1697. X*** 56,71 ****
  1698. X      extern int _unixmode;
  1699. X      _unixmode = 0;
  1700. X  #endif
  1701. X! 
  1702. X! # ifdef __TURBOC__
  1703. X      if (_osmajor >= 3) hname = argv[0];    /* DOS 3.0+ */
  1704. X! # endif
  1705. X! # ifdef TOS
  1706. X      if (*argv[0]) {            /* only a CLI can give us argv[0] */
  1707. X          hname = argv[0];
  1708. X          run_from_desktop = FALSE;
  1709. X      }
  1710. X! # endif
  1711. X  
  1712. X      /*
  1713. X       *  Initialize screen I/O before anything is displayed.
  1714. X--- 72,123 ----
  1715. X      extern int _unixmode;
  1716. X      _unixmode = 0;
  1717. X  #endif
  1718. X! #ifdef __TURBOC__
  1719. X      if (_osmajor >= 3) hname = argv[0];    /* DOS 3.0+ */
  1720. X! #endif
  1721. X! #ifdef TOS
  1722. X      if (*argv[0]) {            /* only a CLI can give us argv[0] */
  1723. X          hname = argv[0];
  1724. X          run_from_desktop = FALSE;
  1725. X      }
  1726. X! #endif
  1727. X! #ifdef MACOS
  1728. X!     AppFile    theFile;
  1729. X!     short    message,numFiles;
  1730. X!     SFReply    reply;
  1731. X! 
  1732. X!     initterm(24,80);
  1733. X!     ObscureCursor();
  1734. X! # ifdef SMALLDATA
  1735. X!     init_decl();
  1736. X! # endif
  1737. X!     /* user might have started up with a save file, so check */
  1738. X!     CountAppFiles(&message,&numFiles);
  1739. X!     if (!message && numFiles) {
  1740. X!         message = 1;
  1741. X!         
  1742. X!         while(message <= numFiles) {
  1743. X!             GetAppFiles(message,&theFile);
  1744. X!             ClrAppFiles(message);
  1745. X!             if (theFile.fType == SAVE_TYPE)
  1746. X!                 break;
  1747. X!         }
  1748. X!         if (theFile.fType == SAVE_TYPE) {
  1749. X!             (void)strncpy(SAVEF, (char *)&theFile.fName[1],
  1750. X!                         (int)theFile.fName[0]);
  1751. X!             (void)strncpy(plname, (char *)&theFile.fName[1],
  1752. X!                         (int)theFile.fName[0]);
  1753. X!             SetVol(0,theFile.vRefNum);
  1754. X!             SAVEF[(int)theFile.fName[0]] = '\0';
  1755. X!             numFiles = 1;
  1756. X!         } else
  1757. X!             numFiles = 0;
  1758. X!     } 
  1759. X!     switches = (short *)malloc((NROFOBJECTS+2) * sizeof(long));
  1760. X!     for (fd = 0; fd < (NROFOBJECTS + 2); fd++)
  1761. X!         switches[fd] = fd;
  1762. X! #endif
  1763. X! 
  1764. X  
  1765. X      /*
  1766. X       *  Initialize screen I/O before anything is displayed.
  1767. X***************
  1768. X*** 75,86 ****
  1769. X       *  and before error(), due to use of termcap strings.
  1770. X       */
  1771. X      gettty();
  1772. X! #ifndef AMIGA
  1773. X      setbuf(stdout,obuf);
  1774. X  #endif
  1775. X      startup();
  1776. X! 
  1777. X! #ifndef AMIGA
  1778. X      /* Save current directory and make sure it gets restored when
  1779. X       * the game is exited.
  1780. X       */
  1781. X--- 127,137 ----
  1782. X       *  and before error(), due to use of termcap strings.
  1783. X       */
  1784. X      gettty();
  1785. X! #if !defined(AMIGA) && !defined(MACOS)
  1786. X      setbuf(stdout,obuf);
  1787. X  #endif
  1788. X      startup();
  1789. X! #if !defined(AMIGA) && !defined(MACOS)
  1790. X      /* Save current directory and make sure it gets restored when
  1791. X       * the game is exited.
  1792. X       */
  1793. X***************
  1794. X*** 92,117 ****
  1795. X  # ifndef NO_SIGNAL
  1796. X      signal(SIGINT, (SIG_RET_TYPE) funcp);    /* restore original directory */
  1797. X  # endif
  1798. X! #endif /* AMIGA */
  1799. X  
  1800. X      if ((dir = getenv("HACKDIR")) != NULL) {
  1801. X          Strcpy(hackdir, dir);
  1802. X! #ifdef CHDIR
  1803. X          chdirx (dir, 1);
  1804. X! #endif
  1805. X      }
  1806. X! #if defined(DGK) && !defined(OLD_TOS)
  1807. X      /* zero "fileinfo" array to prevent crashes on level change */
  1808. X      for (i = 0 ; i <= MAXLEVEL; i++) {
  1809. X          fileinfo[i] = zfinfo;
  1810. X      }
  1811. X! #endif /* DGK && !OLD_TOS */
  1812. X  
  1813. X      initoptions();
  1814. X! #ifdef TOS
  1815. X      if (flags.IBMBIOS && flags.use_color)
  1816. X          set_colors();
  1817. X! #endif
  1818. X      if (!hackdir[0])
  1819. X          Strcpy(hackdir, orgdir);
  1820. X  
  1821. X--- 143,169 ----
  1822. X  # ifndef NO_SIGNAL
  1823. X      signal(SIGINT, (SIG_RET_TYPE) funcp);    /* restore original directory */
  1824. X  # endif
  1825. X! #endif /* AMIGA || MACOS */
  1826. X  
  1827. X+ #ifndef MACOS
  1828. X      if ((dir = getenv("HACKDIR")) != NULL) {
  1829. X          Strcpy(hackdir, dir);
  1830. X! # ifdef CHDIR
  1831. X          chdirx (dir, 1);
  1832. X! # endif
  1833. X      }
  1834. X! # if defined(DGK) && !defined(OLD_TOS)
  1835. X      /* zero "fileinfo" array to prevent crashes on level change */
  1836. X      for (i = 0 ; i <= MAXLEVEL; i++) {
  1837. X          fileinfo[i] = zfinfo;
  1838. X      }
  1839. X! # endif /* DGK && !OLD_TOS */
  1840. X  
  1841. X      initoptions();
  1842. X! # ifdef TOS
  1843. X      if (flags.IBMBIOS && flags.use_color)
  1844. X          set_colors();
  1845. X! # endif
  1846. X      if (!hackdir[0])
  1847. X          Strcpy(hackdir, orgdir);
  1848. X  
  1849. X***************
  1850. X*** 136,148 ****
  1851. X       * may do a prscore().
  1852. X       */
  1853. X          if (!strncmp(argv[1], "-s", 2)) {
  1854. X! #ifdef CHDIR
  1855. X          chdirx(hackdir,0);
  1856. X! #endif
  1857. X          prscore(argc, argv);
  1858. X          exit(0);
  1859. X          }
  1860. X      }
  1861. X  
  1862. X      /*
  1863. X       * It seems you really want to play.
  1864. X--- 188,203 ----
  1865. X       * may do a prscore().
  1866. X       */
  1867. X          if (!strncmp(argv[1], "-s", 2)) {
  1868. X! # ifdef CHDIR
  1869. X          chdirx(hackdir,0);
  1870. X! # endif
  1871. X          prscore(argc, argv);
  1872. X          exit(0);
  1873. X          }
  1874. X      }
  1875. X+ #else
  1876. X+     initoptions();
  1877. X+ #endif    /* MACOS /* */    
  1878. X  
  1879. X      /*
  1880. X       * It seems you really want to play.
  1881. X***************
  1882. X*** 233,238 ****
  1883. X--- 288,298 ----
  1884. X          Strcpy(plname, "wizard");
  1885. X      else
  1886. X  #endif
  1887. X+ #if defined(KR1ED) && defined(WIZARD) && defined(MACOS)
  1888. X+     if (!strcmp(plname,WIZARD))
  1889. X+         Strcpy(plname, "wizard");
  1890. X+     else
  1891. X+ #endif
  1892. X      if (!*plname)
  1893. X          askname();
  1894. X      plnamesuffix();        /* strip suffix from name; calls askname() */
  1895. X***************
  1896. X*** 258,270 ****
  1897. X  
  1898. X      /* initialize static monster strength array */
  1899. X      init_monstr();
  1900. X! 
  1901. X! #ifdef AMIGA
  1902. X      (void) strncat(SAVEF, plname, 31-4);
  1903. X  #else
  1904. X      (void) strncat(SAVEF, plname, 8);
  1905. X  #endif
  1906. X      Strcat(SAVEF, ".sav");
  1907. X      cls();
  1908. X      if (
  1909. X  #ifdef DGK
  1910. X--- 318,339 ----
  1911. X  
  1912. X      /* initialize static monster strength array */
  1913. X      init_monstr();
  1914. X! #ifdef MACOS
  1915. X!     if (!numFiles && findNamedFile(plname,1,&reply)) {
  1916. X!         if (reply.good) {
  1917. X!             strncpy(SAVEF,(char *)&reply.fName[1],(int)reply.fName[0]);
  1918. X!             SAVEF[(int)reply.fName[0]] = '\0';
  1919. X!         }
  1920. X!     } else if (!numFiles)
  1921. X! #endif
  1922. X! #if defined(AMIGA) || defined(MACOS)
  1923. X      (void) strncat(SAVEF, plname, 31-4);
  1924. X  #else
  1925. X      (void) strncat(SAVEF, plname, 8);
  1926. X  #endif
  1927. X+ #ifndef MACOS
  1928. X      Strcat(SAVEF, ".sav");
  1929. X+ #endif
  1930. X      cls();
  1931. X      if (
  1932. X  #ifdef DGK
  1933. X***************
  1934. X*** 317,323 ****
  1935. X          pickup(1);
  1936. X          read_engr_at(u.ux,u.uy);
  1937. X      }
  1938. X! 
  1939. X      flags.moonphase = phase_of_the_moon();
  1940. X      if(flags.moonphase == FULL_MOON) {
  1941. X          You("are lucky!  Full moon tonight.");
  1942. X--- 386,411 ----
  1943. X          pickup(1);
  1944. X          read_engr_at(u.ux,u.uy);
  1945. X      }
  1946. X!     
  1947. X! #ifdef MACOS
  1948. X!     {
  1949. X!         short    i;
  1950. X!         MenuHandle    theMenu;
  1951. X!         
  1952. X!         theMenu = GetMHandle(appleMenu);
  1953. X!         EnableItem(theMenu, 0);
  1954. X!         EnableItem(theMenu, 1);
  1955. X!         theMenu = GetMHandle(fileMenu);
  1956. X!         EnableItem(theMenu,0);
  1957. X!         for (i = inventMenu;i <= extendMenu; i++) {
  1958. X!             theMenu = GetMHandle(i);
  1959. X!             EnableItem(theMenu, 0);
  1960. X!         }
  1961. X!         DrawMenuBar();
  1962. X!         macflags |= fDoUpdate;
  1963. X!     }
  1964. X! #endif
  1965. X!             
  1966. X      flags.moonphase = phase_of_the_moon();
  1967. X      if(flags.moonphase == FULL_MOON) {
  1968. X          You("are lucky!  Full moon tonight.");
  1969. X***************
  1970. X*** 335,340 ****
  1971. X--- 423,432 ----
  1972. X  #endif
  1973. X  
  1974. X      moveloop();
  1975. X+ #ifdef MACOS 
  1976. X+     /* Help for Mac compilers */
  1977. X+     free_decl();
  1978. X+ #endif
  1979. X      return 0;
  1980. X  }
  1981. X  
  1982. X***************
  1983. X*** 359,364 ****
  1984. X--- 451,459 ----
  1985. X  #ifdef MSDOS
  1986. X                  msmsg("\b \b");
  1987. X  #endif
  1988. X+ #ifdef MACOS
  1989. X+                 putc('\b');
  1990. X+ #endif
  1991. X              }
  1992. X              continue;
  1993. X          }
  1994. X***************
  1995. X*** 365,371 ****
  1996. X          if(c != '-')
  1997. X          if(c < 'A' || (c > 'Z' && c < 'a') || c > 'z') c = '_';
  1998. X          if(ct < sizeof(plname)-1) {
  1999. X! #ifdef MSDOS
  2000. X              msmsg("%c", c);
  2001. X  #endif
  2002. X              plname[ct++] = c;
  2003. X--- 460,466 ----
  2004. X          if(c != '-')
  2005. X          if(c < 'A' || (c > 'Z' && c < 'a') || c > 'z') c = '_';
  2006. X          if(ct < sizeof(plname)-1) {
  2007. X! #if defined(MSDOS) || defined(MACOS)
  2008. X              msmsg("%c", c);
  2009. X  #endif
  2010. X              plname[ct++] = c;
  2011. X*** others/Old/pctty.c    Sun Oct 15 18:16:06 1989
  2012. X--- others/pctty.c    Sun Oct 15 12:52:32 1989
  2013. X***************
  2014. X*** 18,24 ****
  2015. X      erase_char = '\b';
  2016. X      kill_char = 21;        /* cntl-U */
  2017. X      flags.cbreak = TRUE;
  2018. X! #ifndef TOS
  2019. X      disable_ctrlP();    /* turn off ^P processing */
  2020. X  #endif
  2021. X  }
  2022. X--- 18,24 ----
  2023. X      erase_char = '\b';
  2024. X      kill_char = 21;        /* cntl-U */
  2025. X      flags.cbreak = TRUE;
  2026. X! #if !defined(TOS) && !defined(MACOS)
  2027. X      disable_ctrlP();    /* turn off ^P processing */
  2028. X  #endif
  2029. X  }
  2030. X***************
  2031. X*** 29,35 ****
  2032. X      end_screen();
  2033. X      if(s) Printf(s);
  2034. X      (void) fflush(stdout);
  2035. X! #ifndef TOS
  2036. X      enable_ctrlP();        /* turn on ^P processing */
  2037. X  #endif
  2038. X  }
  2039. X--- 29,35 ----
  2040. X      end_screen();
  2041. X      if(s) Printf(s);
  2042. X      (void) fflush(stdout);
  2043. X! #if !defined(TOS) && !defined(MACOS)
  2044. X      enable_ctrlP();        /* turn on ^P processing */
  2045. X  #endif
  2046. X  }
  2047. X*** others/Old/pcunix.c    Sun Oct 15 18:16:18 1989
  2048. X--- others/pcunix.c    Sat Oct 14 22:40:07 1989
  2049. X***************
  2050. X*** 19,32 ****
  2051. X  #include <errno.h>
  2052. X  #else
  2053. X  #include <error.h>
  2054. X! #endif /* UNIXDEBUG */
  2055. X  #endif
  2056. X  
  2057. X  #include    <sys/types.h>
  2058. X  #include    <sys/stat.h>
  2059. X  
  2060. X  #ifndef OLD_TOS
  2061. X  static struct stat buf, hbuf;
  2062. X  void
  2063. X  setrandom()
  2064. X  {
  2065. X--- 19,37 ----
  2066. X  #include <errno.h>
  2067. X  #else
  2068. X  #include <error.h>
  2069. X! #endif /* OLD_TOS */
  2070. X  #endif
  2071. X  
  2072. X+ #ifndef MACOS
  2073. X  #include    <sys/types.h>
  2074. X  #include    <sys/stat.h>
  2075. X+ #endif
  2076. X  
  2077. X  #ifndef OLD_TOS
  2078. X+ # ifndef MACOS
  2079. X  static struct stat buf, hbuf;
  2080. X+ # endif
  2081. X+ 
  2082. X  void
  2083. X  setrandom()
  2084. X  {
  2085. X***************
  2086. X*** 91,101 ****
  2087. X      return(getlt()->tm_hour == 0);
  2088. X  }
  2089. X  
  2090. X  void
  2091. X  gethdate(name)
  2092. X  char *name;
  2093. X  {
  2094. X! #if defined(TOS) && !defined(__GNUC__)
  2095. X  /* old version - for people short of space */
  2096. X  /*
  2097. X  /* register char *np;
  2098. X--- 96,107 ----
  2099. X      return(getlt()->tm_hour == 0);
  2100. X  }
  2101. X  
  2102. X+ # ifndef MACOS
  2103. X  void
  2104. X  gethdate(name)
  2105. X  char *name;
  2106. X  {
  2107. X! #  if defined(TOS) && !defined(__GNUC__)
  2108. X  /* old version - for people short of space */
  2109. X  /*
  2110. X  /* register char *np;
  2111. X***************
  2112. X*** 135,146 ****
  2113. X      path = np + 1;
  2114. X      }
  2115. X      error("Cannot get status of %s.", (np = rindex(name, '/')) ? np+1 : name);
  2116. X! #endif /* TOS && __GNUC__ */
  2117. X  }
  2118. X  
  2119. X  int
  2120. X  uptodate(fd) {
  2121. X! #if defined(TOS) && !defined(__GNUC__) /* no fstat yet */
  2122. X      if(fstat(fd, &buf)) {
  2123. X      pline("Cannot get status of saved level? ");
  2124. X      return(0);
  2125. X--- 141,152 ----
  2126. X      path = np + 1;
  2127. X      }
  2128. X      error("Cannot get status of %s.", (np = rindex(name, '/')) ? np+1 : name);
  2129. X! #  endif /* TOS && __GNUC__ */
  2130. X  }
  2131. X  
  2132. X  int
  2133. X  uptodate(fd) {
  2134. X! #  if defined(TOS) && !defined(__GNUC__) /* no fstat yet */
  2135. X      if(fstat(fd, &buf)) {
  2136. X      pline("Cannot get status of saved level? ");
  2137. X      return(0);
  2138. X***************
  2139. X*** 149,165 ****
  2140. X      pline("Saved level is out of date. ");
  2141. X      return(0);
  2142. X      }
  2143. X! #endif
  2144. X      return(1);
  2145. X  }
  2146. X! #endif /* MIN_TOS /* */
  2147. X  
  2148. X  void
  2149. X! regularize(s)    /* normalize file name - we don't like .'s, /'s, spaces */
  2150. X  register char *s;
  2151. X  {
  2152. X      register char *lp;
  2153. X  
  2154. X!     while((lp=index(s, '.')) || (lp=index(s, '/')) || (lp=index(s,' ')))
  2155. X          *lp = '_';
  2156. X  }
  2157. X--- 155,177 ----
  2158. X      pline("Saved level is out of date. ");
  2159. X      return(0);
  2160. X      }
  2161. X! #  endif
  2162. X      return(1);
  2163. X  }
  2164. X! # endif    /* MACOS /* */
  2165. X! #endif /* OLD_TOS /* */
  2166. X  
  2167. X  void
  2168. X! regularize(s)
  2169. X!     /* normalize file name - we don't like .'s, /'s, :'s [Mac], or spaces */
  2170. X  register char *s;
  2171. X  {
  2172. X      register char *lp;
  2173. X  
  2174. X!     while((lp=index(s, '.')) || (lp=index(s, '/')) || (lp=index(s,' '))
  2175. X! #ifdef MACOS
  2176. X!             || (lp=index(s, ':'))
  2177. X! #endif
  2178. X!                                 )
  2179. X          *lp = '_';
  2180. X  }
  2181. X
  2182. END_OF_FILE
  2183. if test 54981 -ne `wc -c <'patches05c'`; then
  2184.     echo shar: \"'patches05c'\" unpacked with wrong size!
  2185. fi
  2186. # end of 'patches05c'
  2187. fi
  2188. echo shar: End of archive 3 \(of 6\).
  2189. cp /dev/null ark3isdone
  2190. MISSING=""
  2191. for I in 1 2 3 4 5 6 ; do
  2192.     if test ! -f ark${I}isdone ; then
  2193.     MISSING="${MISSING} ${I}"
  2194.     fi
  2195. done
  2196. if test "${MISSING}" = "" ; then
  2197.     echo You have unpacked all 6 archives.
  2198.     rm -f ark[1-9]isdone
  2199. else
  2200.     echo You still need to unpack the following archives:
  2201.     echo "        " ${MISSING}
  2202. fi
  2203. ##  End of shell archive.
  2204. exit 0
  2205.